import { addControls, $lastScrollXSpan, scrollSpeed } from './initialization.js';

/**
 * 设置鼠标滚轮事件处理
 * @param {Object} zr ZRender实例
 * @param {Function} redrawChart 重绘图表函数
 * @param {Object} scrollState 滚动状态对象
 */
export function setupMouseWheelHandler(zr, redrawChart, scrollState) {
  zr.on('mousewheel', function (e) {
    e.event.preventDefault();
    // 设置滚动速度
    scrollState.lastScrollX -= Math.floor(e.event.wheelDeltaX * 0.01 * scrollSpeed);
    redrawChart(true, scrollState.lastScrollX, 0);
    $lastScrollXSpan.innerText = scrollState.lastScrollX;
  });
}

/**
 * 设置窗口大小变化事件处理
 * @param {Object} zr ZRender实例
 * @param {Function} redrawChart 重绘图表函数
 */
export function setupResizeHandler(zr, redrawChart) {
  window.addEventListener('resize', function() {
    zr.resize();
    redrawChart(true);
  });
}

/**
 * 设置点击事件处理（隐藏ContextMenu）
 * @param {Object} zr ZRender实例
 * @param {Object} ContextMenu ContextMenu实例
 */
export function setupClickHandler(zr, ContextMenu) {
  zr.dom.addEventListener('click', function () {
    ContextMenu.hide();
  });
}

/**
 * 设置控制面板事件处理
 * @param {Function} redrawChart 重绘图表函数
 * @param {Object} scrollState 滚动状态对象
 */
export function setupControlsHandler(redrawChart, scrollState) {
  addControls(
    (val) => scrollState.lastScrollX = val, 
    (val) => scrollState.lastScrollY = val, 
    $lastScrollXSpan, 
    redrawChart
  );
} 